package com.hwtx.form.domain.repo;

import com.baomidou.mybatisplus.extension.service.IService;
import io.geekidea.boot.framework.page.Paging;
import io.geekidea.boot.system.dto.BulkUserDto;
import io.geekidea.boot.system.dto.SysUserResetPasswordDto;
import io.geekidea.boot.system.dto.SysUserUpdateProfileDto;
import io.geekidea.boot.system.dto.UserDto;
import io.geekidea.boot.system.entity.SysUser;
import io.geekidea.boot.system.query.SysUserQuery;
import io.geekidea.boot.system.vo.SysUserVo;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 系统用户 服务接口
 *
 * @author geekidea
 * @since 2022-12-26
 */
public interface SysUserRepo extends IService<SysUser> {

    /**
     * 添加系统用户
     */
    Long addSysUser(UserDto dto);

    /**
     * 修改系统用户
     */
    Long updateSysUser(UserDto dto);

    /**
     * 批量修改系统用户
     */
    boolean updateSysUsers(BulkUserDto dto);

    /**
     * 删除系统用户
     */
    boolean deleteSysUser(Long id);

    /**
     * 系统用户详情
     */
    SysUserVo getSysUserById(Long id);

    /**
     * 系统用户分页列表
     */
    Paging<SysUserVo> getSysUserPage(SysUserQuery query);

    /**
     * 重置系统用户密码
     */
    boolean resetSysUserPassword(SysUserResetPasswordDto sysUserResetPasswordDto);

    /**
     * 修改个人信息
     */
    boolean updateProfile(SysUserUpdateProfileDto sysUserUpdateProfileDto);

    /**
     * 检查username是否存在
     */
    void checkUsernameExists(String username);

    /**
     * 导入Excel用户数据
     */
    boolean importExcel(MultipartFile multipartFile) throws Exception;

    List<Long> getRolesByUserId(Long userId);

    Paging<SysUserVo> getAssignedOrgUsersPage(SysUserQuery query);

    List<Long> getOrgIdsByUserId(Long userId);

    Pair<String, String> genPwd(String pwd);
}
